package com.catazy.base.presentation.viewmodel

/**
 * BaseAction接口定义了处理状态变化的约简操作
 * 它提供了一种统一的方法来更新状态，以便在不同上下文中实现一致的状态管理
 *
 * @param State 表示状态的类型，它是一个泛型参数，允许在实例化时指定具体的状态类型
 */
interface BaseAction<State> {

    /**
     * reduce函数是BaseAction接口的核心方法，它接受一个状态对象作为参数，并返回一个新的状态对象
     * 这个方法的目的是根据当前动作的逻辑，对输入的状态进行处理和变换，从而生成一个新的状态
     * 它体现了动作对状态的影响，是状态更新的关键
     *
     * @param state 输入的状态对象，它是状态变化的起点
     * @return 返回一个新的状态对象，反映了应用当前动作后的状态变化
     */
    fun reduce(state: State): State
}
